perm filename ROMMS.MF[CM,DEK]2 blob sn#798116 filedate 1985-07-06 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00021 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002	% This file contains special characters of ``math italic'' fonts
C00004 00003	cmchar "Leftward top half arrow"
C00006 00004	cmchar "Leftward bottom half arrow"
C00008 00005	cmchar "Rightward top half arrow"
C00010 00006	cmchar "Rightward bottom half arrow"
C00012 00007	cmchar "Left hook"
C00013 00008	cmchar "Right hook"
C00014 00009	cmchar "Triangle pointing right"
C00015 00010	cmchar "Triangle pointing left"
C00016 00011	cmchar "Period"
C00017 00012	cmchar "Comma"
C00018 00013	cmchar "Less than sign"
C00019 00014	cmchar "Virgule (slash)"
C00020 00015	cmchar "Greater than sign"
C00021 00016	cmchar "Five-pointed star"
C00022 00017	cmchar "Musical flat sign"
C00023 00018	cmchar "Musical natural sign"
C00025 00019	cmchar "Musical sharp sign"
C00027 00020	cmchar "Slur below (smile)"
C00028 00021	cmchar "Slur above (frown)"
C00029 ENDMK
CāŠ—;
% This file contains special characters of ``math italic'' fonts
% that actually are not supposed to be slanted.
% Codes \0050--\0057, \0072--\0077, and \0133--\0137 are generated.

% The italic corrections are zero in all of these characters.
cmchar "Leftward top half arrow";
compute_spread(.45x_height#,.55x_height#);
beginchar(oct"050",18u#,v_center(spread#+rule_thickness#)); less_rounded;
adjust_fit(0,0); pickup crisp.nib;
pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
y0=y1=y2=math_axis; x1+.5rule_thickness=round(w-u); lft x0=round u;
y3-y0=y0-y4=.24asc_height+epsilon; x3=x4=x0+3u+epsilon;
pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
numeric t; path p; p=z4r..{2(x0-x4),y0-y4}z6r;
t=xpart(p intersectiontimes((0,y2l)..(w,y2l))); x2=xpart point t of p;
filldraw z0--(x0,y2l)---z1l..z1r---z2r
 ..subpath (t,0) of (z3r..{2(x0-x3),y0-y3}z5r)
 --z3l..{2(x0-x3),y0-y3}cycle;	% arrowhead and stem
penlabels(0,1,2,3,4,5,6); endchar;
cmchar "Leftward bottom half arrow";
compute_spread(.45x_height#,.55x_height#);
beginchar(oct"051",18u#,v_center(spread#+rule_thickness#)); less_rounded;
adjust_fit(0,0); pickup crisp.nib;
pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
y0=y1=y2=math_axis; x1+.5rule_thickness=round(w-u); lft x0=round u;
y3-y0=y0-y4=.24asc_height+epsilon; x3=x4=x0+3u+epsilon;
pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
numeric t; path p; p=z4r..{2(x0-x4),y0-y4}z6r;
t=xpart(p intersectiontimes((0,y2l)..(w,y2l))); x2=xpart point t of p;
filldraw z0{2(x4-x0),y4-y0}..z4l
 --subpath (0,t) of (z4r..{2(x0-x4),y0-y4}z6r)
 ..z2l---z1l..z1r---(x0,y2r)--cycle;	% arrowhead and stem
penlabels(0,1,2,3,4,5,6); endchar;
cmchar "Rightward top half arrow";
compute_spread(.45x_height#,.55x_height#);
beginchar(oct"052",18u#,v_center(spread#+rule_thickness#)); less_rounded;
adjust_fit(0,0); pickup crisp.nib;
pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
y0=y1=y2=math_axis; x1-.5rule_thickness=round u; rt x0=round(w-u);
y3-y0=y0-y4=.24asc_height+epsilon; x3=x4=x0-3u-epsilon;
pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
numeric t; path p; p=z4l..{2(x0-x4),y0-y4}z6r;
t=xpart(p intersectiontimes((0,y2l)..(w,y2l))); x2=xpart point t of p;
filldraw z0--(x0,y2l)---z1l..z1r---z2r
 ..subpath (t,0) of (z3l..{2(x0-x3),y0-y3}z5r)
 --z3r..{2(x0-x3),y0-y3}cycle;	% arrowhead and stem
penlabels(0,1,2,3,4,5,6); endchar;
cmchar "Rightward bottom half arrow";
compute_spread(.45x_height#,.55x_height#);
beginchar(oct"053",18u#,v_center(spread#+rule_thickness#)); less_rounded;
adjust_fit(0,0); pickup crisp.nib;
pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
y0=y1=y2=math_axis; x1-.5rule_thickness=round u; rt x0=round(w-u);
y3-y0=y0-y4=.24asc_height+epsilon; x3=x4=x0-3u-epsilon;
pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
numeric t; path p; p=z4l..{2(x0-x4),y0-y4}z6r;
t=xpart(p intersectiontimes((0,y2l)..(w,y2l))); x2=xpart point t of p;
filldraw z0{2(x4-x0),y4-y0}..z4r
 --subpath (0,t) of (z4l..{2(x0-x4),y0-y4}z6r)
 ..z2l---z1l..z1r---(x0,y2r)--cycle;	% arrowhead and stem
penlabels(0,1,2,3,4,5,6); endchar;
cmchar "Left hook";
compute_spread(.45x_height#,.55x_height#);
beginchar(oct"054",5u#,v_center(2spread#+rule_thickness#));
adjust_fit(0,0); pickup rule.nib;
lft x2=round u-epsilon; x1=x3=w-x2;
y1-y3=spread; y2=.5[y1,y3]; y3=math_axis;
draw z1{left}...z2{down}...z3{right};	% hook
labels(1,2,3); endchar;
cmchar "Right hook";
compute_spread(.45x_height#,.55x_height#);
beginchar(oct"055",5u#,v_center(2spread#+rule_thickness#));
adjust_fit(0,0); pickup rule.nib;
rt x2=round(w-u)+epsilon; x1=x3=w-x2;
y1-y3=spread; y2=.5[y1,y3]; y3=math_axis;
draw z1{right}...z2{down}...z3{left};	% hook
labels(1,2,3); endchar;
cmchar "Triangle pointing right";
beginchar(oct"056",9u#,v_center(x_height#)); less_rounded;
adjust_fit(0,0); pickup rule.nib;
numeric a,b; a=sqrt(3.14159/sqrt3); % triangle area $=$ circle area
b=.5w-(rt round u); .5[x1',x2']=.5w; x2'-x1'=a*b*sqrt3;
x1=x3=good.x x1'; x2=good.x x2'; y2=.5[y1,y3]=math_axis; y1=good.y(y2+a*b);
draw z1--z2--z3--cycle;	% triangle
labels(1,2,3); endchar;
cmchar "Triangle pointing left";
beginchar(oct"057",9u#,v_center(x_height#)); less_rounded;
adjust_fit(0,0); pickup rule.nib;
numeric a,b; a=sqrt(3.14159/sqrt3); % triangle area $=$ circle area
b=.5w-(rt round u); .5[x1',x2']=.5w; x1'-x2'=a*b*sqrt3;
x1=x3=good.x x1'; x2=good.x x2'; y2=.5[y1,y3]=math_axis; y1=good.y(y2+a*b);
draw z1--z2--z3--cycle;	% triangle
labels(1,2,3); endchar;
cmchar "Period";
numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#;
define_whole_blacker_pixels(dot_diam);
beginchar(oct"072",5u#,dot_diam#,0);	% non-ASCII position
adjust_fit(0,0); pickup fine.nib;
pos1(dot_diam,0); pos2(dot_diam,90);
lft x1l=round(.5w-.5dot_diam); bot y2l=0; z1=z2; dot(1,2);	% dot
penlabels(1,2); endchar;
cmchar "Comma";
numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#;
define_whole_blacker_pixels(dot_diam);
beginchar(oct"073",5u#,dot_diam#,comma_depth#);	% non-ASCII position
adjust_fit(0,0);
x1-.5dot_diam=round(.5w-.5dot_diam); y1-.5dot_diam=0;
comma(1,a,dot_diam,.2u,comma_depth);	% dot and tail
penlabels(1); endchar;
cmchar "Less than sign";
compute_spread(5/4x_height#,3/2x_height#);
beginchar("<",14u#,v_center(spread#+rule_thickness#)); less_rounded;
italcorr h#*slant-u#;
adjust_fit(0,0); pickup rule.nib;
lft x2=round 1.5u-epsilon; x1=x3=w-x2;
y1-y3=spread; y2=.5[y1,y3]=math_axis;
draw z1--z2--z3;	% diagonals
labels(1,2,3); endchar;
cmchar "Virgule (slash)";
beginchar(oct"075",9u#,body_height#,body_depth#);	% non-ASCII position
italcorr body_height#*slant-.5u#;
adjust_fit(0,0); pickup rule.nib; less_rounded;
rt x1=round(w-u)+epsilon; top y1=h+epsilon;
lft x2=round u-epsilon; bot y2=-d-epsilon;
draw z1--z2;	% diagonal
penlabels(1,2); endchar;
cmchar "Greater than sign";
compute_spread(5/4x_height#,3/2x_height#);
beginchar(">",14u#,v_center(spread#+rule_thickness#)); less_rounded;
italcorr math_axis#*slant-u#;
adjust_fit(0,0); pickup rule.nib;
rt x2=round(w-1.5u)+epsilon; x1=x3=w-x2;
y1-y3=spread; y2=.5[y1,y3]=math_axis;
draw z1--z2--z3;	% diagonals
labels(1,2,3); endchar;
cmchar "Five-pointed star";
beginchar(oct"077",9u#,v_center(x_height#)); less_rounded;
adjust_fit(0,0); pickup tiny.nib;
numeric theta; theta=360/5; % degrees between points
pos0(curve,0); pos1(rule_thickness,90); x0=x1=good.x .5w;
top y1r=vround(math_axis+.5x_height+.5rule_thickness);
ypart(.5[z1,z0+(z1-z2) rotated 2theta])=math_axis;
pos2(curve,theta); pos3(rule_thickness,90+theta);
z2=z0; z3-z0=(z1-z0) rotated theta;
z4=whatever[z0l,z1r]=whatever[z2r,z3r];
filldraw for n=0 upto 4:
 z0+(z1r-z0)rotated(n*theta)--z0+(z4-z0)rotated(n*theta)--endfor
 cycle;	% star
penlabels(0,1,2,3,4); endchar;
cmchar "Musical flat sign";
beginchar(oct"133",7u#,body_height#,0); less_rounded;
adjust_fit(0,0); pickup crisp.nib;
numeric light_hair; light_hair=if hefty: vair else: hair fi;
pos1(light_hair,0); pos2(light_hair,180); pos3(light_hair,0); x1=x2=x3;
pos4(.25[light_hair,curve],60); pos5(curve,0);
lft x1l=round u; x4=.5w; rt x5r=round(w-u);
top y1=h; bot y3=-o; top y4=x_height+o; y2=y4-.2x_height; y5=3/4x_height;
filldraw stroke z1e--z3e;	% stem
filldraw stroke z2e{up}...z4e{right}...z5e{down}
 ...{2(x3-x5e),y3-y5e}z3e;	% bowl
penlabels(1,2,3,4,5); endchar;
cmchar "Musical natural sign";
beginchar(oct"134",7u#,asc_height#,desc_depth#); less_rounded;
adjust_fit(0,0); pickup crisp.nib;
numeric light_hair; light_hair=if hefty: vair else: hair fi;
pos1(light_hair,0); pos2(curve,90); pos3(curve,90);
pos4(curve,90); pos5(curve,90); pos6(light_hair,0);
rt x1r=round 15/8u; x2=x4=x1l; x3=x5=x6r=w-x2;
y1=h+o; top y2r=0; .5[y2,y3]=0; y4-y2=y5-y3=x_height; bot y6=-d-o;
x2'=x1r; z2'=whatever[z2r,z3r]; x5'=x6l; z5'=whatever[z4l,z5l];
(x1r,y)=z1l+whatever*(z5-z4); y6l:=y6l-(y-y1r); y1r:=y;
filldraw z1l--z2l--z3l--z3r--z2'--z1r--cycle;	% left stem and lower bar
filldraw z6r--z5r--z4r--z4l--z5'--z6l--cycle;	% right stem and upper bar
penlabels(1,2,3,4,5,6); endchar;
cmchar "Musical sharp sign";
beginchar(oct"135",7u#,asc_height#,desc_depth#); less_rounded;
adjust_fit(0,0); pickup crisp.nib;
numeric light_hair; light_hair=if hefty: vair else: hair fi;
pos1(curve,90); pos2(curve,90); pos3(curve,90); pos4(curve,90);
lft x1=lft x3=round u; x2=x4=w-x1;
top y3r=0; .5[y3,y4]=0; y1-y3=y2-y4=x_height;
filldraw stroke z1e--z2e; filldraw stroke z3e--z4e;	% bars
numeric theta,hstem; theta=angle(z2-z1);
(hstem-crisp)*cosd theta=light_hair-crisp;
pos5(hstem,theta); pos6(hstem,theta); pos7(hstem,theta); pos8(hstem,theta);
lft x5l=lft x6l=round(2u-.5light_hair); x7=x8=w-x6;
top y7l=h+o; bot y6r=-d-o; z7-z5=z8-z6=(whatever,0) rotated theta;
filldraw stroke z5e--z6e; filldraw stroke z7e--z8e;	% stems
penlabels(1,2,3,4,5,6,7,8); endchar;
cmchar "Slur below (smile)";
beginchar(oct"136",18u#,v_center(.5x_height#));
adjust_fit(0,0); pickup fine.nib;
numeric light_stem; light_stem=vround(.5[vair,stem]);
x1-.5hair=round u; y1+.5hair=vround(h+.5hair); x3=w-x1; y3=y1;
pos2(light_stem,90); x2=.5w; y2l=good.y(-d);
numeric theta; theta=angle((z2-z1)yscaled 3);
pos1(hair,90+theta); pos3(hair,90-theta);
filldraw z1l{dir theta}...z2l...{dir-theta}z3l
 ..z3r{-dir-theta}...z2r...{-dir theta}z1r..cycle;	% arc
penlabels(1,2,3); endchar;
cmchar "Slur above (frown)";
beginchar(oct"137",18u#,v_center(.5x_height#));
adjust_fit(0,0); pickup fine.nib;
numeric light_stem; light_stem=vround(.5[vair,stem]);
x1-.5hair=round u; y1-.5hair=vround(-d-.5hair); x3=w-x1; y3=y1;
pos2(light_stem,90); x2=.5w; y2=good.y h;
numeric theta; theta=angle((z2-z1)yscaled 3);
pos1(hair,90+theta); pos3(hair,90-theta);
filldraw z1l{dir theta}...z2l...{dir-theta}z3l
 ..z3r{-dir-theta}...z2r...{-dir theta}z1r..cycle;	% arc
penlabels(1,2,3); endchar;